iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 7
0
自我挑戰組

初心者學C#系列 第 7

Day 7:C#的資料類型 (●´Д`●)

  • 分享至 

  • xImage
  •  

※以下內容皆是新手撰寫,內容可能不完全正確

C#的資料類型分三種,今天要盡力把自己理解的轉換成文字(越來越不曉得自己有沒有理解這些東西了)
btw,爬英文教學跟論壇最難的不是字看不懂,而是字的意思都懂但意思沒通( ´•̥̥̥ω•̥̥̥` )
希望我的文裡額外加的英文有幫助 ˊˇˋ

A. 值型式(value types)
值型式變數是從System.ValueType衍生出來的,顧名思義,可以直接給這種變數一個值。值型式本身就存著資料,舉凡int(存取數字)、char(存取字母)、float(存取小數點)等變數。舉例,每當宣告一個int,系統會分配記憶體存取那個值。

e.g. int n = 5

下圖中為一些可用的值型式:
https://ithelp.ithome.com.tw/upload/images/20190922/20120882NYrhQy6l4g.png
(image source:https://www.tutorialspoint.com/csharp/csharp_data_types.htm)

若想知道某平台上的某型式或某便數的確切大小,可以用sizeof(輸入某型式)這個方法判斷物件或類型佔掉幾個byte(發了好多天的文才發現有程式碼區塊這東西(-_-lll)):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Size of int:{0}", sizeof(int));
            Console.WriteLine("Size of float:{0}", sizeof(float));
            Console.WriteLine("Size of double:{0}", sizeof(double));
        }
    }
}

執行上面這段程式碼會輸出:

Size of int:4
Size of float:4
Size of double:8

B. 參考型式(reference types)
參考型式沒有帶著變數實際的資料,但可用多個變數連接到記憶體位置(memory location);記憶體位置的資料若為某變數所更動,其他變數會也會有所改變。以三種內建參考型式為例:

  • 物件型式(object type):物件型式(System.Object類別)可賦予其任何其他型式的值,如值型式、參考型式、自定義或已定義的,不過給予其值之前得先進行轉換。
    值型式轉換成物件型式稱作裝箱(boxing),反之則稱作開箱(unboxing)。以下是boxing的動作:
    object Yee;
    Yee = 87;

  • 動態型式(dynamic type):動態資料型式可存取任何值,會在運行時間(run time)確認這類型的變數型式,跟物件型式的差別在於物件型式是在編譯時間(compile time)確認變數型式的;動態型式的用法:

dynamic example = 9487;
  • 字串型式(string type):使用字串型式(System.String類別)可給變數任何字串值,是由物件型式衍伸而來;有兩種方法可以定義字串型式值:
String Yee = “I hate doing homework.”; //first method
@”I hate doing homework.”; //second method

使用者能自己定義的參考型式為類別(class)、介面(interface)和委派(delegate),後面或許會講到。

C. 指標型式(pointer types)
指標型式變數儲存的是別種型式的記憶體位址(memory address)。使用指標型式變數的程式碼便是Unsafe程式碼(Unsafe code)。宣告指標型式的格式為「型式* 識別符;」,例:

char* YeeA;
int* YeeB;
float* YeeC;

Tutorialspoint的Unsafe Codes章節也有提到指標型式:
https://www.tutorialspoint.com/csharp/csharp_unsafe_codes.htm

呼~目前就算不完全看得懂的程式碼,有時候也會練練,期盼再往下學便能知道自己到底在幹嘛(ˊˇˋ) 下一篇講C#的類型轉換

參考資料:
(a) Tutorialspoint; C# - Data Types
https://www.tutorialspoint.com/csharp/csharp_data_types.htm
(b) C# Corner – Pointers in C#
https://www.c-sharpcorner.com/article/pointers-in-C-Sharp/
(c) 國家教育研究院雙語詞彙、學術名詞暨辭書資訊網
http://terms.naer.edu.tw/


上一篇
Day 6:C#的基本語法 (((o(*°▽°*)o)))
下一篇
Day 8:C#的類型轉換 (∿°○°)∿
系列文
初心者學C#30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言